package com.wiz.web.dao.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.wiz.web.vo.CompanyAmountLimitVO;
import com.wiz.web.vo.MemberAmountLimitVO;
import com.wiz.web.vo.criteria.AccountAmountHistoryCriteria;
import com.wiz.web.vo.criteria.AccountChargeHistoryCriteria;
import com.wiz.web.vo.criteria.AccountPointHistoryCriteria;
import com.wiz.web.vo.criteria.MemberCriteria;
import com.wiz.web.vo.to.AccountAmountHistoryTO;
import com.wiz.web.vo.to.AccountChargeHistoryTO;
import com.wiz.web.vo.to.AccountPointHistoryTO;
import com.wiz.web.vo.to.MemberGradeTO;
import com.wiz.web.vo.to.MemberTO;

public interface MemberMapper {
	
	/**
	 * 获得会员详细信息
	 * @param criteria
	 * @return
	 */
	MemberTO getMemberInfo(MemberCriteria criteria);
	
	/**
	 * 用户模糊搜索
	 * @param criteria
	 * @return
	 */
	List<MemberTO> getMembersByFuzzyQuery(MemberCriteria criteria);
	
	/**
	 * 用户模糊搜索量
	 * @param criteria
	 * @return
	 */
	int getCntMembersByFuzzyQuery(MemberCriteria criteria);
	
	/**
	 * 获取会员金额相关信息，用于加油充值等业务
	 * @param criteria
	 * @return
	 */
	MemberTO getMemberAmountInfo(MemberCriteria criteria);
	
	/**
	 * 获得会员限额
	 * @param criteria
	 * @return
	 */
	MemberAmountLimitVO getMemberAmountLimit(MemberCriteria criteria);
	
	/**
	 * 获得公司限额，针对总帐支付,查询的是公司账号虚拟的资金帐号
	 * @param criteria
	 * @return
	 */
	CompanyAmountLimitVO getCompanyAmountLimit(MemberCriteria criteria);

	/**
	 * 是否需要加油密码---取消
	 * @param criteria
	 * @return
	 */
	int updateIsMemberPassword(MemberCriteria criteria);
	
	/**
	 * 修改加油密码
	 * @param criteria
	 * @return
	 */
	int editMemberPassword(MemberCriteria criteria);
	
	/**
	 * 重置密码
	 * @param criteria
	 * @return
	 */
	int resetMemberPassword(MemberCriteria criteria);
	
	/**
	 * 查询是否有密码
	 * @param criteria
	 * @return
	 */
	int getCntMemberPassword(MemberCriteria criteria);
	
	/**
	 * 新增密码
	 * @param criteria
	 * @return
	 */
	int insertMemberPassword(MemberCriteria criteria);
	
	/**
	 * 获取用户的会员等级
	 * @param memberId
	 * @return
	 */
	MemberGradeTO getGradeByMemberId(MemberCriteria criteria);
	
	/**
	 * 获取单次充值记录
	 * @param id
	 * @return
	 */
	AccountChargeHistoryTO getMemberChargeHistroyById(@Param("id")Integer id);
	
	/**
	 * 获取资金流水列表
	 * @param criteria
	 * @return
	 */
	List<AccountAmountHistoryTO> getMemberAccountHistroyList(AccountAmountHistoryCriteria criteria);
	
	/**
	 * 资金流水列表数量
	 * @param criteria
	 * @return
	 */
	int getCntMemberAccountHistroy(AccountAmountHistoryCriteria criteria);
	
	/**
	 * 获取积分流水列表
	 * @param criteria
	 * @return
	 */
	List<AccountPointHistoryTO> getMemberPointHistroyList(AccountPointHistoryCriteria criteria);
	
	/**
	 * 积分流水列表数量
	 * @param criteria
	 * @return
	 */
	int getCntMemberPointHistroy(AccountPointHistoryCriteria criteria);
	
	/**
	 * 获取充值流水列表
	 * @param criteria
	 * @return
	 */
	List<AccountChargeHistoryTO> getMemberChargeHistroyList(AccountChargeHistoryCriteria criteria);
	
	/**
	 * 充值流水列表数量
	 * @param criteria
	 * @return
	 */
	int getCntMemberChargeHistroy(AccountChargeHistoryCriteria criteria);
	
	/**
	 * 修改可加油加油站限制
	 * @param criteria
	 * @return
	 */
	int updateFuellingStations(MemberCriteria criteria);
	
	/**
	 * 修改可充值加油站限制
	 * @param criteria
	 * @return
	 */
	int updateChargeStations(MemberCriteria criteria);
}
